하드웨어 테스트

간략한 설명

파일: \examples\Processing\DebuggingAndTest\HardwareTest\HardwareTest.va

Default Platform: mE5-MA-VCL

요약 설명

DMA, RAM, GPIO, 트리거 및 LED에 대한 하드웨어 자가 진단 예제입니다. 이 예제는 매개변수 라이브러리의 연산자를 광범위하게 사용합니다.

'하드웨어 테스트' 예제는 하드웨어 자가 진단 테스트를 수행합니다.

이 애플릿은 다음과 같은 기능으로 구성되어 있습니다:

  • DMA 성능 테스트: 다양한 메모리 용량 및 인터럽트 빈도에 따른 서로 다른 이미지 크기
  • RAM 테스트: 오류 확인 및 처리
  • 카메라: 카메라 포트를 통한 이미지 획득 확인
  • 카메라 트리거: 카메라에 트리거 신호를 전송합니다
  • GPIO: GPIO 입력 신호를 모니터링하고 GPIO 출력 신호를 설정합니다.
  • 이벤트 테스트: 소프트웨어 콜백 이벤트 생성
  • 모니터링: FPGA 온도, 전력, PoCL 등 (자세한 내용은 BoardStatus참조)

다음 다이어그램은 애플릿의 기능 블록을 보여줍니다.

애플릿 하드웨어 테스트의 블록 다이어그램

그림 283. 애플릿 하드웨어 테스트의 블록 다이어그램


VisualApplets 구현은 두 개의 프로세스로 나뉩니다. Process0에는 DMA 테스트, RAM 테스트, 카메라 데이터 수집 등 모든 이미지 처리 부분이 포함됩니다. 반면 Process1에는 진행 중인 데이터 수집과 무관한 부분들이 포함됩니다. DMA 연산이 포함되지 않은 프로세스는 애플릿이 로드되는 즉시 시작되므로, 이 프로세스의 함수들은 데이터 수집과 무관하게 독립적으로 사용할 수 있습니다. 자세한 내용은 'DMA가 없는 프로세스 / 트리거 프로세스'를 참조하십시오.

다음 두 스크린샷은 Process0과 Process1을 보여줍니다.

하드웨어 테스트 절차 0

그림 284. 하드웨어 테스트 절차 0


하드웨어 테스트 절차 1

그림 285. 하드웨어 테스트 절차 1


이 애플릿은 사용자가 편리하게 이용할 수 있도록 매개변수 라이브러리의 연산자를 집중적으로 활용하여 구현되었습니다. H-Box 구현에는 기능적인 부분이 포함되어 있습니다. 매개변수는 별도로 확인하기 위해 H-Box 매개변수의 속성 항목에 나열되어 있습니다. 이는 예를 들어 microDisplay에서 애플릿을 사용할 때 유용하며, 다음 스크린샷에서 볼 수 있듯이 사용하기 쉬운 매개변수만 나열되어 있습니다.

microDisplay에서 Applet 하드웨어 테스트 시 매개변수 변환 및 참조 사용

그림 286. microDisplay에서 애플릿 하드웨어 테스트 시 매개변수 ‘Translates’ 및 ‘References’의 사용


이 애플릿의 구현은 간단하며, VA 파일을 살펴보면 쉽게 이해할 수 있습니다. 하지만, 각 매개변수의 변환 방식과 참조 사항을 자세히 살펴봄으로써 그 사용법을 이해해 보겠습니다.

Implementation of Main Image Processing Part

주요 이미지 처리 부분에는 RAM 테스트, DMA 성능 테스트 및 카메라 영상 획득 기능이 포함되어 있습니다. 이 애플릿은 DMA 채널당 한 번에 하나의 모드만 출력할 수 있도록 되어 있습니다. 따라서 여러 개의 SourceSelector 연산자가 사용됩니다. 올바른 입력 인덱스를 지정하는 매개변수화를 피하기 위해 EnumParamTranslator 연산자를 사용하여 사용 편의성을 높였습니다.

RAM 테스트, DMA 성능 테스트 및 카메라 영상 획득을 위한 애플릿 하드웨어 테스트 구현

그림 287. RAM 테스트, DMA 성능 테스트 및 카메라 영상 획득을 위한 애플릿 하드웨어 테스트 구현


다음에서는 TranslateOutputSelect 의 매개변수 값에 대해 자세히 설명합니다.

먼저, 열거형 값을 정의해야 합니다.

"DMA_Performance" = 0x001;
"Camera" = 0x002;
"RAM0_Difference" = 0x000;
"RAM0_Errors" = 0x100;
"RAM1_Difference" = 0x010;
"RAM1_Errors" = 0x110;
"RAM2_Difference" = 0x020;
"RAM2_Errors" = 0x120;
"RAM3_Difference" = 0x030;
"RAM3_Errors" = 0x130;

보시다시피 열거형의 값들은 16진수 값으로 정의되어 있습니다. 이를 통해 다음 세 가지로 쉽게 분류할 수 있습니다. SourceSelector 모듈에 대한 분배가 용이해집니다. 하위 4비트는 TestMode.SelectSource 모듈에, 4~7비트는 RAMTest/SelectRAM.SelectSource에, 8~11비트는 RAMTest/SelectRAMOutputMode/EnableBitpattern.SelectSource에 사용됩니다. 이를 통해 WriteAction 및 ReadAction 매개변수에 대한 구현이 매우 간단해집니다.

그런 다음 이 변환 값을 열거형 값과 함께 사용할 수 있습니다. 이 값을 변경하면 SourceSelector 모듈의 매개변수 값이 자동으로 변경됩니다.

Implementation of DMA Performance Pattern Generator

H-Box GeneratorDMAPerformance에는 패턴 생성기뿐만 아니라 출력 프레임 속도를 제어하는 이미지 밸브도 포함되어 있습니다. 이 패턴 생성 기능은 빈 이미지 생성기와 픽셀 및 이미지 카운터를 사용하여 롤링 대각선 패턴을 생성하는 매우 간단한 방식입니다.

이 밸브는 주기 발생기 조작자에 의해 제어됩니다 생성를 생성합니다. 생성기의 단위는 틱(ticks)으로 표시됩니다. 타임베이스를 사용하여 프레임 속도를 지정하고자 하므로, translate 연산자 FloatParamTranslator를 사용합니다. 따라서 이 연산자를 사용하여 초당 프레임 수를 틱으로 변환합니다. 다음 스크린샷은 구현 예시를 보여줍니다.

FloatParamTranslator를 사용하여 초당 프레임 수를 틱으로 변환하기

그림 288. FloatParamTranslator 를 이용한 초당 프레임 수에서 틱으로의 변환


연산자를 사용하여 예제 HardwareTest에서 너비와 높이를 설정하기 IntParamTranslator

이미지의 너비와 높이에 대해서도 앞 섹션에서 설명한 것과 동일한 절차를 수행합니다. 이 경우 다음 연산자를 사용할 수 있습니다. IntParamTranslator연산자를 사용할 수 있습니다. 여기서 값을 설계 내의 두 모듈로 직접 전달할 수 있습니다. DisplayName 및 DisplayHierarchy 매개변수에 지정된 값에 유의하십시오.

애플릿에서 너비와 높이를 쉽게 설정하기 위한 IntParamTranslator 사용

그림 289. IntParamTranslator 를 사용하여 애플릿의 너비와 높이를 간편하게 설정하기